package business.ue;

import java.util.List;

import validation.Validate;
import dao.Dao;
import dao.DaoException;
import auth.service.User;
import entites.Domaine;
import entites.UniteEnseignement;

/**
 * Classe du gestionaire d'UE
 * @author Sebastien Bartoli
 * @version 0.2
 */
public class UeManager implements IUeManager{

	Dao maBase = new Dao();

	/* (non-Javadoc)
	 * @see ueManager.IUeManager#deleteUE(auth.service.User, entites.UniteEnseignement)
	 */
	@Override
	public void deleteUE(User user, UniteEnseignement ue) throws UeManagerException {

		if (! user.isInCharge(user, ue)){
			throw new UeManagerException("Vous n'avez pas les droits pour effectuer cette action");
		}
		try{
			maBase.deleteUE(ue.getCode());		
		}
		catch (DaoException e){
			System.out.println(e);
		}
	}

	/* (non-Javadoc)
	 * @see ueManager.IUeManager#insertUE(auth.service.User, entites.UniteEnseignement)
	 */
	@Override
	public void insertUE(User user, UniteEnseignement ue) throws UeManagerException {

		if (! user.isInCharge(user, ue)){
			throw new UeManagerException("Vous n'avez pas les droits pour effectuer cette action");
		}
		try{
			validateUE(ue);
		}
		catch (UeManagerException e){
			System.out.println(e);
		}
		try{
			maBase.addUeToDomaine(ue,ue.getDomaine());
		}
		catch (DaoException e){
			System.out.println(e);
		}
	}


	/* (non-Javadoc)
	 * @see ueManager.IUeManager#showDashboardUE(auth.service.User)
	 */
	@Override
	public List<UniteEnseignement> showDashboardUE(User user, Domaine dom) throws UeManagerException {
		List<UniteEnseignement> listUE = null;
		if (! user.isInCharge(user, dom)){
			throw new UeManagerException("Vous n'avez pas les droits pour effectuer cette action");
		}
		try{
			listUE = maBase.findAllUeIntoDomaine(dom);
		}
		catch (DaoException e){
			System.out.println(e);
		}
		return listUE;
	}

	/* (non-Javadoc)
	 * @see ueManager.IUeManager#updateUE(auth.service.User, entites.UniteEnseignement, entites.UniteEnseignement)
	 */
	@Override
	public void updateUE(User user, UniteEnseignement ue) throws UeManagerException {
		if (! user.isInCharge(user, ue)){
			throw new UeManagerException("Vous n'avez pas les droits pour effectuer cette action");
		}
		UniteEnseignement oldUE = maBase.findUE(ue.getCode());
		oldUE = ue;
		try{
			validateUE(ue);
		}
		catch (UeManagerException e) {
			System.out.println(e);		
		}
		try{
			maBase.updateUE(oldUE);
		}
		catch (DaoException e){
			System.out.println(e);
		}
	}

	/* (non-Javadoc)
	 * @see ueManager.IUeManager#validateUE(auth.service.User, entites.UniteEnseignement)
	 */
	@Override
	public void validateUE(UniteEnseignement ue) throws UeManagerException {
		Validate v = new Validate();
		if ( v.validate(ue) != null){
			throw new UeManagerException("L'UE ne peut etre enregistree en base car elle n'est pas valide");
		}
	}
}
